/* 
 * File:   QRHouseholder.h
 * Author: gustavo
 *
 * Created on August 21, 2012, 9:47 PM
 */

#ifndef QRHOUSEHOLDER_HPP
#define	QRHOUSEHOLDER_HPP

#include "../matrix.hpp"
#include "QR.hpp"

#include "../impl/mdec/qr_householder.hpp"

namespace imp {

	namespace math {

		class QRHouseholder {
		};

		template <> void QR<double, QRHouseholder>::decompose(Matrix<double>& M) {

			impl::qr_householder(H.rows, H.columns, H.data, H.columns, (double*) NULL, 0, Qt.data, Qt.columns, R.data, R.columns);

		}

		template <> bool QR<double, QRHouseholder>::modifiedInput() const {
			return false;
		}

		template <> void QR<float, QRHouseholder>::decompose(Matrix<float>& M) {
			impl::qr_householder(H.rows, H.columns, H.data, H.columns, (float*) NULL, 0, Qt.data, Qt.columns, R.data, R.columns);
		}

		template <> bool QR<float, QRHouseholder>::modifiedInput() const {
			return false;
		}

	}

}
#endif	/* QRHOUSEHOLDER_HPP */

